/*
 * @Author: GM 
 * @Date: 2017-04-06 11:53:30 
 * @Last Modified by: GM
 * @Last Modified time: 2017-04-06 11:53:58
 */

// 输入框失去焦点验证
$(document).on('blur', 'input', function () {
    var name = this.name;
    var v = this.value;
    var self = this;

    switch (name) {
        case "goods_cost[]": //商品详情sku列表价格
        case "price_one[]": //入驻商商品详情sku列表一级价
        case "price_two[]": //入驻商商品详情sku列表二级价
        case "price_three[]": //入驻商商品详情sku列表三级价
        case "wholesale_retail_price[]": //入驻商商品详情sku列表建议零售价
            var tips = limitLength(8, 2, Number(v));
            if (tips.error === 1) {
                validateTips($(self).parent(), tips.msg, 1);
            } else {
                validateTips($(self).parent(), tips.msg, 0);
            }
            break;
        case "inventory[]": //商品详情sku列表库存
            var tips = limitLength(6, -1, Number(v));
            if (tips.error === 1) {
                validateTips($(self).parent(), tips.msg, 1);
            } else {
                validateTips($(self).parent(), tips.msg, 0);
            }
            break;
        case "volume": //商品详情体积
        case "weight": //商品详情重量
            var tips = limitLength(8, 4, Number(v));
            if (tips.error === 1) {
                validateTips($(self).parent(), tips.msg, 1);
            } else {
                validateTips($(self).parent(), tips.msg, 0);
            }
            break;
        default:
            break;
    }
});

/**
 * [limitLength 验证输入限制]
 * @param  {Number} intmax   整数位保留个数
 * @param  {Number} floatmax 小数位保留个数
 * @param  {Number} num      验证参数
 * @return {Object}          返回对象 error 错误码，0无错误，1有错误， msg: 错误提示
 */
function limitLength(intmax, floatmax, num) {
    if ($.type(intmax) !== "number") return { error: 1, msg: '整数位个数限制传入类型错误，请传数字类型' };
    if ($.type(floatmax) !== "number") return { error: 1, msg: '小数位个数限制传入类型错误，请传数字类型' };
    if ($.type(num) !== "number") return { error: 1, msg: '数据类型错误，请传数字类型' };
    if (num == 0) return { error: 1, msg: '参数不能为空，并且不能等于零' };

    var _intmax = intmax || 7; //整数位，默认最大长度 7 位
    var _floatmax = (floatmax === -1) ? 0 : (floatmax || 4);//小数位，默认最大长度 4位
    var _num = '' + num;
    var _v = _num.split('.');

    if (/\D/.test(_v[0]) || (_v.length === 2 && /\D/.test(_v[1]))) {
        return { error: 1, msg: '参数错误，不能包含非数字的字符' };
    }

    if (_floatmax === 0 && _v.length > 1) {
        return { error: 1, msg: '参数错误，不能包含小数' };
    }

    if (_v[0].length > _intmax) {
        return { error: 1, msg: '整数位长度不能大于' + _intmax };
    } else if (_v.length === 2 && _v[1].length > _floatmax) {
        return { error: 1, msg: '小数位长度不能大于' + _floatmax };
    } else {
        return { error: 0, msg: '' };
    }

}

/**
 * [validateTips 输出提示]
 * @param  {Object} me   this对象
 * @param  {String} msg  提示文字
 * @param  {Number} type 显示隐藏参数，1显示、0隐藏
 * @return {[type]}      [description]
 */
var validateTips = function (me, msg, type) {
    if (type === 0) {
        $(me).find('div.error').remove();
        var attributeListState = $('#attribute-list').find('div.error');
        var volumeState = $('input[name=volume]').siblings('div.error');
        var weightState = $('input[name=weight]').siblings('div.error');

        if (attributeListState.length === 0 && volumeState.length === 0 && weightState.length === 0) {
            $('#goods-submit').removeClass('gbtn-disabled').prop('disabled', false);
        }
    } else {
        if ($(me).find("div.error").length !== 0) {
            $(me).find('div.error').text(msg);
        } else {
            $(me).append('<div class="error">' + msg + '</div>');
            $('#goods-submit').addClass('gbtn-disabled').prop('disabled', true);
        }
    }
}
